import java.io.*;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.StringTokenizer;

class sort implements Comparator<User> {
    @Override
    public int compare(User o1, User o2) {
        if (o1.getUserid().equals(o2.getUserid())){//当userId相同时，根据productId排序
            return o1.getProductID().compareTo(o2.getProductID());
        }
        return o1.getUserid().compareTo(o2.getUserid());//否则根据userId排序
    }
}

public class getReview {
    public static void main(String[] args) {
        ArrayList<User> users = new ArrayList<>();//用于存放并整理读取到的内容
        try {
            //读取文件
            FileReader fr = new FileReader("E:\\方秋慧\\JAVA程序设计\\实验报告\\Watches.txt\\Watches.txt");
            BufferedReader input = new BufferedReader(fr);
            //解析文件内容
            String s = null;//用于存放每次读取出来的内容
            String pro = null;//用于存放读到的productId
            String usr = null;//用于存放读到的userId
            String sum = null;//用于存放读到的summary
            while ((s = input.readLine()) != null) {//循环直到读取结束
                if (s.contains("productId")) {//当读到productId关键字时
                    StringTokenizer s1 = new StringTokenizer(s, ":");//用StringTokenizer对象进行分割
                    s1.nextToken();//将前面不需要的内容读走
                    pro = s1.nextToken();//将productId的内容放到pro中
                    while ((s = input.readLine()) != null) {//再次进入循环，该循环用于读取userId的内容
                        if (s.contains("userId")) {//当读到userId关键字时
                            StringTokenizer s2 = new StringTokenizer(s, ":");//用StringTokenizer对象进行分割
                            s2.nextToken();//将前面不需要的内容读走
                            usr = s2.nextToken();//将userId的内容放到usr中
                            break;//跳出循环
                        }
                    }
                    while ((s = input.readLine()) != null) {//进入循环，该循环用于读取summary的内容
                        if (s.contains("summary")) {//当读到summary关键字时
                            StringTokenizer s3 = new StringTokenizer(s, ":");//用StringTokenizer对象进行分割
                            s3.nextToken();//将前面不需要的内容读走
                            sum = s3.nextToken();//将summary的内容放到sum中
                            break;//跳出循环
                        }
                    }
                    User user = new User(usr,pro,sum);//用读取到的三条内容创建一个User对象
                    users.add(user);//User对象放到ArrayList中
                }
            }
            //关闭文件字符流和缓冲流
            fr.close();
            input.close();

            users.sort(new sort());//对ArrayList中的元素进行排序

            //写文件
            FileWriter fw = new FileWriter("review.txt");
            BufferedWriter output = new BufferedWriter(fw);
            for (User u:users) {//取出Arraylist中的每个对象
                output.write(u.getUserid()+";"+u.getProductID()+";"+u.getSummary()+";");//将内容写入，用“;"隔开
                output.newLine();//换行
            }
            output.flush();//刷新
            output.close();
            fw.close();

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}
